Feature and classification vectors

Joining, by = "property"
Column `property` joining factors with different levels, coercing to character vector

Outer products


Call:
lm(formula = mean ~ mode_1 + mode_2 + mode_3 + mode_4 + mode_5 + 
    mode_6, data = d_reg)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.67853 -0.21445  0.06241  0.18754  0.51754 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)  1.415e-17  2.004e-02   0.000 1.000000    
mode_1      -9.219e-01  2.689e-01  -3.429 0.000758 ***
mode_2       1.564e-01  2.689e-01   0.582 0.561527    
mode_3       2.396e-01  2.689e-01   0.891 0.374049    
mode_4      -2.616e-01  2.689e-01  -0.973 0.331915    
mode_5       3.802e-02  2.689e-01   0.141 0.887700    
mode_6      -2.890e-02  2.689e-01  -0.107 0.914542    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.2689 on 173 degrees of freedom
Multiple R-squared:  0.07421,   Adjusted R-squared:  0.0421 
F-statistic: 2.311 on 6 and 173 DF,  p-value: 0.03585
Analysis of Variance Table

Model 1: mean ~ mode_1
Model 2: mean ~ mode_1 + mode_2
Model 3: mean ~ mode_1 + mode_2 + mode_3
Model 4: mean ~ mode_1 + mode_2 + mode_3 + mode_4
Model 5: mean ~ mode_1 + mode_2 + mode_3 + mode_4 + mode_5
Model 6: mean ~ mode_1 + mode_2 + mode_3 + mode_4 + mode_5 + mode_6
  Res.Df    RSS Df Sum of Sq      F Pr(>F)
1    178 12.659                           
2    177 12.634  1  0.024461 0.3384 0.5615
3    176 12.577  1  0.057418 0.7943 0.3740
4    175 12.508  1  0.068438 0.9467 0.3319
5    174 12.507  1  0.001446 0.0200 0.8877
6    173 12.506  1  0.000835 0.0115 0.9145
parameter SV beta beta_se beta_t beta_p signif
mode_1 3.200 -0.922 0.269 -3.429 0.001 ***
mode_2 1.352 0.156 0.269 0.582 0.562 n.s.
mode_3 0.928 0.240 0.269 0.891 0.374 n.s.
mode_4 0.477 -0.262 0.269 -0.973 0.332 n.s.
mode_5 0.335 0.038 0.269 0.141 0.888 n.s.
mode_6 0.324 -0.029 0.269 -0.107 0.915 n.s.

Plotting properties in 2D spaces

Joining, by = "property"
Column `property` joining factors with different levels, coercing to character vector

Joining, by = "property"
Column `property` joining factors with different levels, coercing to character vector

Joining, by = "property"
Column `property` joining factors with different levels, coercing to character vector

Plotting items in 2D spaces

LS0tCnRpdGxlOiAiRXhwbG9yYXRpb24gd2l0aCBTVkQiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKLS0tCgpgYGB7ciwgaW5jbHVkZSA9IEZ9CiMgRk9SIE9MREVSIEtJRFMKIyBmaXJzdCBydW4gY29nc2NpMjAxOF9kaW1raWQuUm1kCiMgZ2V0IG1lYW5zIGJ5IGNoYXJhY3RlciBieSBjYXBhY2l0eSBmb3Igb2xkIGNvaG9ydApkXzc5X21lYW4gPC0gZF9vbGQgJT4lCiAgZ3JvdXBfYnkoY2hhcmFjdGVyLCBjYXBhY2l0eSkgJT4lCiAgc3VtbWFyaXNlKG1lYW4gPSBtZWFuKHJlc3BvbnNlTnVtKSkgJT4lCiAgdW5ncm91cCgpICU+JQogIGdyb3VwX2J5KGNoYXJhY3RlcikgJT4lCiAgbXV0YXRlKGNhcF9tZWFuID0gbWVhbihtZWFuKSwKICAgICAgICAgbWVhbl9jZW50ID0gbWVhbiAtIGNhcF9tZWFuKSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgc2VsZWN0KGNoYXJhY3RlciwgY2FwYWNpdHksIG1lYW5fY2VudCkgJT4lCiAgc3ByZWFkKGNoYXJhY3RlciwgbWVhbl9jZW50KSAlPiUKICByZW1vdmVfcm93bmFtZXMoKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgY29sdW1uX3RvX3Jvd25hbWVzKCJjYXBhY2l0eSIpCgojIG9yaWVudCBsaWtlIEpheQpkXzc5X21lYW5fdCA8LSBkX29sZCAlPiUKICBncm91cF9ieShjaGFyYWN0ZXIsIGNhcGFjaXR5KSAlPiUKICBzdW1tYXJpc2UobWVhbiA9IG1lYW4ocmVzcG9uc2VOdW0pKSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgZ3JvdXBfYnkoY2FwYWNpdHkpICU+JQogIG11dGF0ZShjaGFyX21lYW4gPSBtZWFuKG1lYW4pLAogICAgICAgICBtZWFuX2NlbnQgPSBtZWFuIC0gY2hhcl9tZWFuKSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgc2VsZWN0KGNoYXJhY3RlciwgY2FwYWNpdHksIG1lYW5fY2VudCkgJT4lCiAgc3ByZWFkKGNhcGFjaXR5LCBtZWFuX2NlbnQpICU+JQogIHJlbW92ZV9yb3duYW1lcygpICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICBjb2x1bW5fdG9fcm93bmFtZXMoImNoYXJhY3RlciIpCgojIEZPUiBBRFVMVFMgKFBOQVMgU1RVRFkgNCkKIyAuLi4gb3JpZW50ZWQgbGlrZSBTYXhlIGV0IGFsLgojIGRfYWR1bHRfbWVhbiA8LSByZWFkLmNzdigiaHR0cHM6Ly9vc2YuaW8va2R6Z2UvZG93bmxvYWQiKSAlPiUKIyAgIHNlbGVjdChzdWJpZCwgY29uZGl0aW9uLCBoYXBweTpwcmlkZSkgJT4lCiMgICBnYXRoZXIoY2FwYWNpdHksIHJlc3BvbnNlLCAtc3ViaWQsIC1jb25kaXRpb24pICU+JQojICAgZ3JvdXBfYnkoY29uZGl0aW9uLCBjYXBhY2l0eSkgJT4lCiMgICBzdW1tYXJpc2UobWVhbiA9IG1lYW4ocmVzcG9uc2UsIG5hLnJtID0gVCkpICU+JQojICAgdW5ncm91cCgpICU+JQojICAgZ3JvdXBfYnkoY29uZGl0aW9uKSAlPiUKIyAgIG11dGF0ZShjYXBfbWVhbiA9IG1lYW4obWVhbiksCiMgICAgICAgICAgbWVhbl9jZW50ID0gbWVhbiAtIGNhcF9tZWFuKSAlPiUKIyAgIHVuZ3JvdXAoKSAlPiUKIyAgIHNlbGVjdChjb25kaXRpb24sIGNhcGFjaXR5LCBtZWFuX2NlbnQpICU+JQojICAgc3ByZWFkKGNvbmRpdGlvbiwgbWVhbl9jZW50KSAlPiUKIyAgIHJlbW92ZV9yb3duYW1lcygpICU+JQojICAgZGF0YS5mcmFtZSgpICU+JQojICAgY29sdW1uX3RvX3Jvd25hbWVzKCJjYXBhY2l0eSIpCgojIC4uLiBvcmllbnRlZCBsaWtlIEpheQojIGRfYWR1bHRfbWVhbiA8LSByZWFkLmNzdigiaHR0cHM6Ly9vc2YuaW8va2R6Z2UvZG93bmxvYWQiKSAlPiUKIyAgIHNlbGVjdChzdWJpZCwgY29uZGl0aW9uLCBoYXBweTpwcmlkZSkgJT4lCiMgICBnYXRoZXIoY2FwYWNpdHksIHJlc3BvbnNlLCAtc3ViaWQsIC1jb25kaXRpb24pICU+JQojICAgZ3JvdXBfYnkoY29uZGl0aW9uLCBjYXBhY2l0eSkgJT4lCiMgICBzdW1tYXJpc2UobWVhbiA9IG1lYW4ocmVzcG9uc2UsIG5hLnJtID0gVCkpICU+JQojICAgdW5ncm91cCgpICU+JQojICAgZ3JvdXBfYnkoY2FwYWNpdHkpICU+JQojICAgbXV0YXRlKGNvbmRfbWVhbiA9IG1lYW4obWVhbiksCiMgICAgICAgICAgbWVhbl9jZW50ID0gbWVhbiAtIGNvbmRfbWVhbikgJT4lCiMgICB1bmdyb3VwKCkgJT4lCiMgICBzZWxlY3QoY29uZGl0aW9uLCBjYXBhY2l0eSwgbWVhbl9jZW50KSAlPiUKIyAgIHNwcmVhZChjYXBhY2l0eSwgbWVhbl9jZW50KSAlPiUKIyAgIHJlbW92ZV9yb3duYW1lcygpICU+JQojICAgZGF0YS5mcmFtZSgpICU+JQojICAgY29sdW1uX3RvX3Jvd25hbWVzKCJjb25kaXRpb24iKQoKIyBzZXQgYmFzZQojIGRfYmFzZV9tZWFuIDwtIGRfNzlfbWVhbgpkX2Jhc2VfbWVhbiA8LSBkXzc5X21lYW5fdAojIGRfYmFzZV9tZWFuIDwtIGRfYWR1bHRfbWVhbgoKIyBjaGVjayB6ZXJvLWNlbnRlcmluZwpwYXN0ZTAoIm1heGltdW0gY29sdW1uIG1lYW46ICIsIG1heChhYnMoY29sTWVhbnMoZF9iYXNlX21lYW4pKSkpCnBhc3RlMCgibWF4aW11bSByb3cgbWVhbjogIiwgcm91bmQobWF4KGFicyhyb3dNZWFucyhkX2Jhc2VfbWVhbikpKSwgMykpCmBgYAoKYGBge3J9CiMgc2V0IHNjYWxlIGxpbWl0cwpzY2FsZV9saW0gPC0gYyhtaW4oZF9iYXNlX21lYW4pICsgMC4yNSwgbWF4KGRfYmFzZV9tZWFuKSArIDAuMjUpCgojIGdldCBpdGVtIGFuZCBwcm9wZXJ0eSBuYW1lcwppdGVtX25hbWVzIDwtIG5hbWVzKGRfYmFzZV9tZWFuKQpwcm9wZXJ0eV9uYW1lcyA8LSByb3duYW1lcyhkX2Jhc2VfbWVhbikKCiMgZG8gZWZhCmVmYV9mYWN0b3JzIDwtIGRhdGEuZnJhbWUocHJvcGVydHkgPSBwcm9wZXJ0eV9uYW1lcykgJT4lCiAgbXV0YXRlKGZhY3RvciA9CiAgICAgICAgICAgaWZlbHNlKHByb3BlcnR5ICVpbiUgYygiaHVuZ2VyIiwgImh1bmdyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFpbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmF0aWd1ZSIsICJ0aXJlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGxlYXN1cmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWVfd2lsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29uc2Npb3VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzYWZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNpcmVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYXVzZWEiLCAibmF1c2VhdGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmdlciIsICJhbmdyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZW50aW9ucyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXdhcmVuZXNzIiwgInNlbGZfYXdhcmUiKSwKICAgICAgICAgICAgICAgICAgIkJPRFkiLAogICAgICAgICAgICAgICAgICBpZmVsc2UocHJvcGVydHkgJWluJSBjKCJlbWJhcnJhc3NtZW50IiwgImVtYmFycmFzc2VkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpZGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb3ZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3VpbHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWxpZWZzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHVydF9mZWVsaW5ncyIsICJkaXNyZXNwZWN0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzYWRuZXNzIiwgImRlcHJlc3NlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVtb19yZWNvZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImpveSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcnNvbmFsaXR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFwcGluZXNzIiwgImhhcHB5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9yYWxpdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxmX3Jlc3RyYWludCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRob3VnaHRzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAiSEVBUlQiLAogICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHByb3BlcnR5ICVpbiUgYygibWVtb3J5IiwgInJlbWVtYmVyaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlY29nbml6aW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlbXBlcmF0dXJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW11bmljYXRpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VlaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlcHRoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvdW5kcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnb2FsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNob2ljZSIsICJjaG9pY2VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpZ3VyaW5nX291dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFzb25pbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic21lbGwiLCAib2RvcnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcHV0YXRpb25zIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1JTkQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpKQoKIyBlZmFfZmFjdG9ycyA8LSBkYXRhLmZyYW1lKGl0ZW0gPSBpdGVtX25hbWVzKSAlPiUKIyAgIG11dGF0ZShmYWN0b3IgPQojICAgICAgICAgICAgaWZlbHNlKGl0ZW0gJWluJSBjKCJodW5nZXIiLCAiaHVuZ3J5IiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhaW4iLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmF0aWd1ZSIsICJ0aXJlZCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmZWFyIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBsZWFzdXJlIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWVfd2lsbCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25zY2lvdXMiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2FmZSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNpcmVzIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hdXNlYSIsICJuYXVzZWF0ZWQiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmdlciIsICJhbmdyeSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlbnRpb25zIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF3YXJlbmVzcyIsICJzZWxmX2F3YXJlIiksCiMgICAgICAgICAgICAgICAgICAgIkJPRFkiLAojICAgICAgICAgICAgICAgICAgIGlmZWxzZShpdGVtICVpbiUgYygiZW1iYXJyYXNzbWVudCIsICJlbWJhcnJhc3NlZCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpZGUiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvdmUiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImd1aWx0IiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWxpZWZzIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodXJ0X2ZlZWxpbmdzIiwgImRpc3Jlc3BlY3RlZCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2FkbmVzcyIsICJkZXByZXNzZWQiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVtb19yZWNvZyIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiam95IiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJzb25hbGl0eSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFwcGluZXNzIiwgImhhcHB5IiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb3JhbGl0eSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VsZl9yZXN0cmFpbnQiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRob3VnaHRzIiksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFSVCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShpdGVtICVpbiUgYygibWVtb3J5IiwgInJlbWVtYmVyaW5nIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVjb2duaXppbmciLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZW1wZXJhdHVyZSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW11bmljYXRpbmciLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWVpbmciLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXB0aCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvdW5kcyIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdvYWwiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaG9pY2UiLCAiY2hvaWNlcyIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpZ3VyaW5nX291dCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYXNvbmluZyIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNtZWxsIiwgIm9kb3JzIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcHV0YXRpb25zIiksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlORCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSkKCiMgZWZhX2ZhY3RvcnMgPC0gcHN5Y2g6OmZhKHQoZF9iYXNlX21lYW4pLCAzLCByb3RhdGUgPSAidmFyaW1heCIpJGxvYWRpbmdzW10gJT4lCiMgICBkYXRhLmZyYW1lKCkgJT4lCiMgICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiMgICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtcHJvcGVydHkpICU+JQojICAgZ3JvdXBfYnkocHJvcGVydHkpICU+JQojICAgdG9wX24oMSwgYWJzKGxvYWRpbmcpKSAlPiUKIyAgIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yLCAKIyAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiTVIzIiwgIk1SMSIsICJNUjIiKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiQk9EWSIsICJIRUFSVCIsICJNSU5EIikpKQpgYGAKCiMgRmVhdHVyZSBhbmQgY2xhc3NpZmljYXRpb24gdmVjdG9ycwoKYGBge3IsIGluY2x1ZGUgPSBGfQojIGRvIHN2ZCBmb3Igb2xkIGNvaG9ydCAoZ2V0IE4gbW9kZXMpCnN2ZF9iYXNlIDwtIHN2ZChkX2Jhc2VfbWVhbiwgNiwgNikKIyBzdmRfYmFzZSA8LSBzdmQoZF9iYXNlX21lYW4sIDQsIDQpCiMgc3ZkX2Jhc2UgPC0gc3ZkKGRfYmFzZV9tZWFuLCA2LCAyKQp1X29sZCA8LSBzdmRfYmFzZSR1CnNfb2xkIDwtIHN2ZF9iYXNlJGQKdl9vbGQgPC0gc3ZkX2Jhc2UkdgpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC44fQojIHZpc3VhbGl6ZSBmZWF0dXJlIHZlY3RvcnMgKHUpCmdncGxvdChkYXRhLmZyYW1lKHVfb2xkKSAlPiUKICAgICAgICAgbXV0YXRlKFgxID0gWDEgKiBzX29sZFsxXSwKICAgICAgICAgICAgICAgIFgyID0gWDIgKiBzX29sZFsyXSwKICAgICAgICAgICAgICAgIFgzID0gWDMgKiBzX29sZFszXSwKICAgICAgICAgICAgICAgIFg0ID0gWDQgKiBzX29sZFs0XSwKICAgICAgICAgICAgICAgIFg1ID0gWDUgKiBzX29sZFs1XSwKICAgICAgICAgICAgICAgIFg2ID0gWDYgKiBzX29sZFs2XSkgJT4lCiAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigicHJvcGVydHkiKSAlPiUKICAgICAgICAgYXJyYW5nZShkZXNjKGFicyhYMSkpLCBkZXNjKGFicyhYMikpLCAKICAgICAgICAgICAgICAgICBkZXNjKGFicyhYMykpLCBkZXNjKGFicyhYNCkpKSAlPiUKICAgICAgICAgbXV0YXRlKG9yZGVyID0gMTpucm93KC4pKSAlPiUKICAgICAgICAgZ2F0aGVyKG1vZGUsIHZhbHVlLCAtcHJvcGVydHksIC1vcmRlcikgJT4lCiAgICAgICAgIG11dGF0ZShtb2RlID0gZ3N1YigiWCIsICIiLCBtb2RlKSkgJT4lCiAgICAgICAgIG11dGF0ZV9hdCh2YXJzKHByb3BlcnR5LCBtb2RlKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiAgICAgICAgIG11dGF0ZShtb2RlID0gZmFjdG9yKG1vZGUsIGxhYmVscyA9IGMoIm1vZGVfMSIsICJtb2RlXzIiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV8zIiwgIm1vZGVfNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfNSIsICJtb2RlXzYiKSksCiAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IGZhY3Rvcihwcm9wZXJ0eSwgbGFiZWxzID0gcHJvcGVydHlfbmFtZXMpKSwKICAgICAgIGFlcyh4ID0gbW9kZSwgeSA9IHJlb3JkZXIocHJvcGVydHksIGRlc2Mob3JkZXIpKSwKICAgICAgICAgICBmaWxsID0gdmFsdWUpKSArIAogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKHZhbHVlLCAyKSwgbnNtYWxsID0gMikpLCBzaXplID0gMykgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHR5cGUgPSAiZGl2IiwgcGFsZXR0ZSA9ICJSZEJ1IikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgbGFicyh0aXRsZSA9ICJVICogUzogRmVhdHVyZSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAibW9kZSIsCiAgICAgICB5ID0gInByb3BlcnR5IikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CiMgYWx0ZXJuYXRpdmUgdmlzdWFsaXphdGlvbiBvZiBmZWF0dXJlIHZlY3RvcnMgKHUpCmRhdGEuZnJhbWUodV9vbGQpICU+JQogIG11dGF0ZShYMSA9IFgxICogc19vbGRbMV0sCiAgICAgICAgIFgyID0gWDIgKiBzX29sZFsyXSwKICAgICAgICAgWDMgPSBYMyAqIHNfb2xkWzNdLAogICAgICAgICBYNCA9IFg0ICogc19vbGRbNF0sCiAgICAgICAgIFg1ID0gWDUgKiBzX29sZFs1XSwKICAgICAgICAgWDYgPSBYNiAqIHNfb2xkWzZdKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiAgYXJyYW5nZShkZXNjKGFicyhYMSkpLCBkZXNjKGFicyhYMikpLCAKICAgICAgICAgIGRlc2MoYWJzKFgzKSksIGRlc2MoYWJzKFg0KSksCiAgICAgICAgICBkZXNjKGFicyhYNSkpLCBkZXNjKGFicyhYNikpKSAlPiUKICBtdXRhdGUob3JkZXIgPSAxOm5yb3coLikpICU+JQogIGdhdGhlcihtb2RlLCB2YWx1ZSwgLXByb3BlcnR5LCAtb3JkZXIpICU+JQogIG11dGF0ZShtb2RlID0gZ3N1YigiWCIsICIiLCBtb2RlKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIG1vZGUpLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKICBtdXRhdGUobW9kZSA9IGZhY3Rvcihtb2RlLCBsYWJlbHMgPSBjKCJtb2RlXzEiLCAibW9kZV8yIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV8zIiwgIm1vZGVfNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV81IiwgIm1vZGVfNiIpKSwKICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHByb3BlcnR5X25hbWVzKSkgJT4lCiAgZnVsbF9qb2luKGVmYV9mYWN0b3JzICU+JSBzZWxlY3QocHJvcGVydHksIGZhY3RvcikpICU+JQogIGZpbHRlcihtb2RlICVpbiUgYygibW9kZV8xIiwgIm1vZGVfMiIsICJtb2RlXzMiKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9kZSwgeSA9IHZhbHVlLCBsYWJlbCA9IHByb3BlcnR5LCBjb2xvciA9IGZhY3RvcikpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBsdHkgPSAyKSArCiAgZ2VvbV9wb2ludCgpICsKICBnZ3JlcGVsOjpnZW9tX3RleHRfcmVwZWwoc2l6ZSA9IDMsIHNlZ21lbnQuc2l6ZSA9IDAuMSkgKyAjLCBkaXJlY3Rpb24gPSAieCIpICsKICAjIGdlb21fdGV4dChzaXplID0gMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9udWRnZSh4ID0gMC4wNiksIGhqdXN0ID0gMCkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIlNldDEiKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIikgKwogIGxhYnModGl0bGUgPSAiVSAqIFM6IEZlYXR1cmUgdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIm1vZGUiLAogICAgICAgeSA9ICJVLXZlY3RvciB2YWx1ZSAqIHNpbmd1bGFyIHZhbHVlIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNn0KIyB2aXN1YWxpemUgY2xhc3NpZmllciB2ZWN0b3JzICh2KQpnZ3Bsb3QoZGF0YS5mcmFtZSh2X29sZCkgJT4lCiAgICAgICAgIG11dGF0ZShYMSA9IFgxICogc19vbGRbMV0sCiAgICAgICAgICAgICAgICBYMiA9IFgyICogc19vbGRbMl0sCiAgICAgICAgICAgICAgICBYMyA9IFgzICogc19vbGRbM10sCiAgICAgICAgICAgICAgICBYNCA9IFg0ICogc19vbGRbNF0sCiAgICAgICAgICAgICAgICBYNSA9IFg1ICogc19vbGRbNV0sCiAgICAgICAgICAgICAgICBYNiA9IFg2ICogc19vbGRbNl0pICU+JQogICAgICAgICByb3duYW1lc190b19jb2x1bW4oIml0ZW0iKSAlPiUKICAgICAgICAgYXJyYW5nZShkZXNjKGFicyhYMSkpLCBkZXNjKGFicyhYMikpLCAKICAgICAgICAgICAgICAgICBkZXNjKGFicyhYMykpLCBkZXNjKGFicyhYNCkpLAogICAgICAgICAgICAgICAgIGRlc2MoYWJzKFg1KSksIGRlc2MoYWJzKFg2KSkpICU+JQogICAgICAgICBtdXRhdGUob3JkZXIgPSAxOm5yb3coLikpICU+JQogICAgICAgICBnYXRoZXIobW9kZSwgdmFsdWUsIC1pdGVtLCAtb3JkZXIpICU+JQogICAgICAgICBtdXRhdGUobW9kZSA9IGdzdWIoIlgiLCAiIiwgbW9kZSkpICU+JQogICAgICAgICBtdXRhdGVfYXQodmFycyhpdGVtLCBtb2RlKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiAgICAgICAgIG11dGF0ZShtb2RlID0gZmFjdG9yKG1vZGUsIGxhYmVscyA9IGMoIm1vZGVfMSIsICJtb2RlXzIiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV8zIiwgIm1vZGVfNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfNSIsICJtb2RlXzYiKSksCiAgICAgICAgICAgICAgICBpdGVtID0gZmFjdG9yKGl0ZW0sIGxhYmVscyA9IGl0ZW1fbmFtZXMpKSwKICAgICAgIGFlcyh4ID0gbW9kZSwgeSA9IHJlb3JkZXIoaXRlbSwgZGVzYyhvcmRlcikpLAogICAgICAgICAgIGZpbGwgPSB2YWx1ZSkpICsgCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQodmFsdWUsIDIpLCBuc21hbGwgPSAyKSksIHNpemUgPSAzKSArCiAgc2NhbGVfZmlsbF9kaXN0aWxsZXIodHlwZSA9ICJkaXYiLCBwYWxldHRlID0gIlJkQnUiKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBsYWJzKHRpdGxlID0gIlYgKiBTOiBDbGFzc2lmaWNhdGlvbiB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAibW9kZSIsCiAgICAgICB5ID0gIml0ZW0iKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KIyBhbHRlcm5hdGl2ZSB2aXN1YWxpemF0aW9uIG9mIGZlYXR1cmUgdmVjdG9ycyAodSkKZGF0YS5mcmFtZSh2X29sZCkgJT4lCiAgbXV0YXRlKFgxID0gWDEgKiBzX29sZFsxXSwKICAgICAgICAgWDIgPSBYMiAqIHNfb2xkWzJdLAogICAgICAgICBYMyA9IFgzICogc19vbGRbM10sCiAgICAgICAgIFg0ID0gWDQgKiBzX29sZFs0XSwKICAgICAgICAgWDUgPSBYNSAqIHNfb2xkWzVdLAogICAgICAgICBYNiA9IFg2ICogc19vbGRbNl0pICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiaXRlbSIpICU+JQogIGFycmFuZ2UoZGVzYyhhYnMoWDEpKSwgZGVzYyhhYnMoWDIpKSwKICAgICAgICAgIGRlc2MoYWJzKFgzKSksIGRlc2MoYWJzKFg0KSksCiAgICAgICAgICBkZXNjKGFicyhYNSkpLCBkZXNjKGFicyhYNikpKSAlPiUKICBtdXRhdGUob3JkZXIgPSAxOm5yb3coLikpICU+JQogIGdhdGhlcihtb2RlLCB2YWx1ZSwgLWl0ZW0sIC1vcmRlcikgJT4lCiAgbXV0YXRlKG1vZGUgPSBnc3ViKCJYIiwgIiIsIG1vZGUpKSAlPiUKICBtdXRhdGVfYXQodmFycyhpdGVtLCBtb2RlKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiAgbXV0YXRlKG1vZGUgPSBmYWN0b3IobW9kZSwgbGFiZWxzID0gYygibW9kZV8xIiwgIm1vZGVfMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV8zIiwgIm1vZGVfNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV81IiwgIm1vZGVfNiIpKSwKICAgICAgICAgaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSkgJT4lCiAgIyBmdWxsX2pvaW4oZWZhX2ZhY3RvcnMgJT4lIHNlbGVjdChpdGVtLCBmYWN0b3IpKSAlPiUKICBmaWx0ZXIobW9kZSAlaW4lIGMoIm1vZGVfMSIsICJtb2RlXzIiLCAibW9kZV8zIikpICU+JQogIGdncGxvdChhZXMoeCA9IG1vZGUsIHkgPSB2YWx1ZSwgbGFiZWwgPSBpdGVtKSkgKyAjICwgY29sb3IgPSBmYWN0b3IpKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgbHR5ID0gMikgKwogIGdlb21fcG9pbnQoKSArCiAgZ2dyZXBlbDo6Z2VvbV90ZXh0X3JlcGVsKHNpemUgPSAzLCBzZWdtZW50LnNpemUgPSAwLjEpICsgIywgZGlyZWN0aW9uID0gIngiKSArCiAgIyBnZW9tX3RleHQoc2l6ZSA9IDIsIHBvc2l0aW9uID0gcG9zaXRpb25fbnVkZ2UoeCA9IDAuMDYpLCBoanVzdCA9IDApICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJTZXQxIikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgbGFicyh0aXRsZSA9ICJWICogUzogRmVhdHVyZSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAibW9kZSIsCiAgICAgICB5ID0gIlYtdmVjdG9yIHZhbHVlICogc2luZ3VsYXIgdmFsdWUiKQpgYGAKCiMgT3V0ZXIgcHJvZHVjdHMKCmBgYHtyfQojIE9VVEVSIFBST0RVQ1RTICogU0lOR1VMQVIgVkFMVUUgLS0tLS0KIyBjYWxjdWxhdGUgb3V0ZXIgcHJvZHVjdHMsIG11bHRpcGx5IGJ5IHNpbmd1bGFyIHZhbHVlCm1fZDEgPC0gb3V0ZXIodV9vbGRbLDFdLCB2X29sZFssMV0pICogc19vbGRbMV0KbV9kMiA8LSBvdXRlcih1X29sZFssMl0sIHZfb2xkWywyXSkgKiBzX29sZFsyXQptX2QzIDwtIG91dGVyKHVfb2xkWywzXSwgdl9vbGRbLDNdKSAqIHNfb2xkWzNdCm1fZDQgPC0gb3V0ZXIodV9vbGRbLDRdLCB2X29sZFssNF0pICogc19vbGRbNF0KbV9kNSA8LSBvdXRlcih1X29sZFssNV0sIHZfb2xkWyw1XSkgKiBzX29sZFs1XQptX2Q2IDwtIG91dGVyKHVfb2xkWyw2XSwgdl9vbGRbLDZdKSAqIHNfb2xkWzZdCgojIGFkZCB0b2dldGhlcgptX3N1bSA8LSBtX2QxICsgbV9kMiArIG1fZDMgKyBtX2Q0ICsgbV9kNSArIG1fZDYKbV9kaWZmIDwtIGFzLm1hdHJpeChkX2Jhc2VfbWVhbikgLSBtX3N1bQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA4LCBmaWcuYXNwID0gMn0KIyBnZ3Bsb3QoZGF0YS5mcmFtZShtX2QxKSAlPiUKIyAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiMgICAgICAgICAgZ2F0aGVyKGl0ZW0sIHZhbHVlLCAtcHJvcGVydHkpICU+JQojICAgICAgICAgIG11dGF0ZShpdGVtID0gZ3N1YigiWCIsICIiLCBpdGVtKSkgJT4lCiMgICAgICAgICAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIGl0ZW0pLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKIyAgICAgICAgICBtdXRhdGUoaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSwKIyAgICAgICAgICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHByb3BlcnR5X25hbWVzKSksCiMgICAgICAgIGFlcyh4ID0gaXRlbSwgeSA9IHByb3BlcnR5LAojICAgICAgICAgICAgIyB4ID0gcmVvcmRlcihpdGVtLCB2YWx1ZSksIHkgPSByZW9yZGVyKHByb3BlcnR5LCB2YWx1ZSksIAojICAgICAgICAgICAgZmlsbCA9IHZhbHVlKSkgKyAKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQodmFsdWUsIDIpLCBuc21hbGwgPSAyKSksIHNpemUgPSAzKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcih0eXBlID0gImRpdiIsIAojICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gc2NhbGVfbGltLAojICAgICAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJQUkduIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkpICsKIyAgIGxhYnModGl0bGUgPSAiTW9kZSAxOiBvdXRlciBwcm9kdWN0ICogc2luZ3VsYXIgdmFsdWUgbWF0cml4IiwKIyAgICAgICAgeCA9ICJpdGVtIiwKIyAgICAgICAgeSA9ICJwcm9wZXJ0eSIpCiMgCiMgZ2dwbG90KGRhdGEuZnJhbWUobV9kMikgJT4lCiMgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJwcm9wZXJ0eSIpICU+JQojICAgICAgICAgIGdhdGhlcihpdGVtLCB2YWx1ZSwgLXByb3BlcnR5KSAlPiUKIyAgICAgICAgICBtdXRhdGUoaXRlbSA9IGdzdWIoIlgiLCAiIiwgaXRlbSkpICU+JQojICAgICAgICAgIG11dGF0ZV9hdCh2YXJzKHByb3BlcnR5LCBpdGVtKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiMgICAgICAgICAgbXV0YXRlKGl0ZW0gPSBmYWN0b3IoaXRlbSwgbGFiZWxzID0gaXRlbV9uYW1lcyksCiMgICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gZmFjdG9yKHByb3BlcnR5LCBsYWJlbHMgPSBwcm9wZXJ0eV9uYW1lcykpLAojICAgICAgICBhZXMoeCA9IGl0ZW0sIHkgPSBwcm9wZXJ0eSwKIyAgICAgICAgICAjIHggPSByZW9yZGVyKGl0ZW0sIHZhbHVlKSwgeSA9IHJlb3JkZXIocHJvcGVydHksIHZhbHVlKSwgCiMgICAgICAgICAgZmlsbCA9IHZhbHVlKSkgKyAKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQodmFsdWUsIDIpLCBuc21hbGwgPSAyKSksIHNpemUgPSAzKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcih0eXBlID0gImRpdiIsIAojICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gc2NhbGVfbGltLAojICAgICAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJQUkduIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkpICsKIyAgIGxhYnModGl0bGUgPSAiTW9kZSAyOiBvdXRlciBwcm9kdWN0ICogc2luZ3VsYXIgdmFsdWUgbWF0cml4IiwKIyAgICAgICAgeCA9ICJpdGVtIiwKIyAgICAgICAgeSA9ICJwcm9wZXJ0eSIpCiMgCiMgZ2dwbG90KGRhdGEuZnJhbWUobV9kMykgJT4lCiMgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJwcm9wZXJ0eSIpICU+JQojICAgICAgICAgIGdhdGhlcihpdGVtLCB2YWx1ZSwgLXByb3BlcnR5KSAlPiUKIyAgICAgICAgICBtdXRhdGUoaXRlbSA9IGdzdWIoIlgiLCAiIiwgaXRlbSkpICU+JQojICAgICAgICAgIG11dGF0ZV9hdCh2YXJzKHByb3BlcnR5LCBpdGVtKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiMgICAgICAgICAgbXV0YXRlKGl0ZW0gPSBmYWN0b3IoaXRlbSwgbGFiZWxzID0gaXRlbV9uYW1lcyksCiMgICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gZmFjdG9yKHByb3BlcnR5LCBsYWJlbHMgPSBwcm9wZXJ0eV9uYW1lcykpLAojICAgICAgICBhZXMoeCA9IGl0ZW0sIHkgPSBwcm9wZXJ0eSwKIyAgICAgICAgICAjIHggPSByZW9yZGVyKGl0ZW0sIHZhbHVlKSwgeSA9IHJlb3JkZXIocHJvcGVydHksIHZhbHVlKSwgCiMgICAgICAgICAgZmlsbCA9IHZhbHVlKSkgKyAKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQodmFsdWUsIDIpLCBuc21hbGwgPSAyKSksIHNpemUgPSAzKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcih0eXBlID0gImRpdiIsIAojICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gc2NhbGVfbGltLAojICAgICAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJQUkduIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkpICsKIyAgIGxhYnModGl0bGUgPSAiTW9kZSAzOiBvdXRlciBwcm9kdWN0ICogc2luZ3VsYXIgdmFsdWUgbWF0cml4IiwKIyAgICAgICAgeCA9ICJpdGVtIiwKIyAgICAgICAgeSA9ICJwcm9wZXJ0eSIpCiMgCiMgZ2dwbG90KGRhdGEuZnJhbWUobV9kNCkgJT4lCiMgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJwcm9wZXJ0eSIpICU+JQojICAgICAgICAgIGdhdGhlcihpdGVtLCB2YWx1ZSwgLXByb3BlcnR5KSAlPiUKIyAgICAgICAgICBtdXRhdGUoaXRlbSA9IGdzdWIoIlgiLCAiIiwgaXRlbSkpICU+JQojICAgICAgICAgIG11dGF0ZV9hdCh2YXJzKHByb3BlcnR5LCBpdGVtKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiMgICAgICAgICAgbXV0YXRlKGl0ZW0gPSBmYWN0b3IoaXRlbSwgbGFiZWxzID0gaXRlbV9uYW1lcyksCiMgICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gZmFjdG9yKHByb3BlcnR5LCBsYWJlbHMgPSBwcm9wZXJ0eV9uYW1lcykpLAojICAgICAgICBhZXMoeCA9IGl0ZW0sIHkgPSBwcm9wZXJ0eSwKIyAgICAgICAgICAjIHggPSByZW9yZGVyKGl0ZW0sIHZhbHVlKSwgeSA9IHJlb3JkZXIocHJvcGVydHksIHZhbHVlKSwgCiMgICAgICAgICAgZmlsbCA9IHZhbHVlKSkgKyAKIyAgIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKIyAgIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQodmFsdWUsIDIpLCBuc21hbGwgPSAyKSksIHNpemUgPSAzKSArCiMgICBzY2FsZV9maWxsX2Rpc3RpbGxlcih0eXBlID0gImRpdiIsIAojICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gc2NhbGVfbGltLAojICAgICAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJQUkduIikgKwojICAgdGhlbWVfbWluaW1hbCgpICsKIyAgIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkpICsKIyAgIGxhYnModGl0bGUgPSAiTW9kZSA0OiBvdXRlciBwcm9kdWN0ICogc2luZ3VsYXIgdmFsdWUgbWF0cml4IiwKIyAgICAgICAgeCA9ICJpdGVtIiwKIyAgICAgICAgeSA9ICJwcm9wZXJ0eSIpCgpnX2FjdHVhbCA8LSBnZ3Bsb3QoZGF0YS5mcmFtZShkX2Jhc2VfbWVhbikgJT4lCiAgICAgICAgICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigicHJvcGVydHkiKSAlPiUKICAgICAgICAgICAgICAgICAgICAgZ2F0aGVyKGl0ZW0sIHZhbHVlLCAtcHJvcGVydHkpICU+JQogICAgICAgICAgICAgICAgICAgICBtdXRhdGUoaXRlbSA9IGZhY3RvcihpdGVtLCBsZXZlbHMgPSBpdGVtX25hbWVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gZmFjdG9yKHByb3BlcnR5LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IHByb3BlcnR5X25hbWVzKSksCiAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGl0ZW0sIHkgPSBwcm9wZXJ0eSwKICAgICAgICAgICAgICAgICAgICAgICAjIHggPSByZW9yZGVyKGl0ZW0sIHZhbHVlKSwgeSA9IHJlb3JkZXIocHJvcGVydHksIHZhbHVlKSwKICAgICAgICAgICAgICAgICAgICAgICBmaWxsID0gdmFsdWUpKSArCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQodmFsdWUsIDIpLCBuc21hbGwgPSAyKSksIHNpemUgPSAzKSArCiAgc2NhbGVfZmlsbF9kaXN0aWxsZXIodHlwZSA9ICJkaXYiLCAKICAgICAgICAgICAgICAgICAgICAgICAjIGxpbWl0cyA9IHNjYWxlX2xpbSwKICAgICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBjKC0xLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICBwYWxldHRlID0gIlBSR24iKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKSArCiAgbGFicyh0aXRsZSA9ICJBY3R1YWwgZGF0YSIsCiAgICAgICB4ID0gIml0ZW0iLAogICAgICAgeSA9ICJwcm9wZXJ0eSIpCgpnX2xpbmNvbWIgPC0gZ2dwbG90KGRhdGEuZnJhbWUobV9zdW0pICU+JQogICAgICAgICAgICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJwcm9wZXJ0eSIpICU+JQogICAgICAgICAgICAgICAgICAgICAgZ2F0aGVyKGl0ZW0sIHZhbHVlLCAtcHJvcGVydHkpICU+JQogICAgICAgICAgICAgICAgICAgICAgbXV0YXRlKGl0ZW0gPSBnc3ViKCJYIiwgIiIsIGl0ZW0pKSAlPiUKICAgICAgICAgICAgICAgICAgICAgIG11dGF0ZV9hdCh2YXJzKHByb3BlcnR5LCBpdGVtKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiAgICAgICAgICAgICAgICAgICAgICBtdXRhdGUoaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IGZhY3Rvcihwcm9wZXJ0eSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gcHJvcGVydHlfbmFtZXMpKSwKICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGl0ZW0sIHkgPSBwcm9wZXJ0eSwKICAgICAgICAgICAgICAgICAgICAgICAgIyB4ID0gcmVvcmRlcihpdGVtLCB2YWx1ZSksIAogICAgICAgICAgICAgICAgICAgICAgICAjIHkgPSByZW9yZGVyKHByb3BlcnR5LCB2YWx1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSB2YWx1ZSkpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZCh2YWx1ZSwgMiksIG5zbWFsbCA9IDIpKSwgc2l6ZSA9IDMpICsKICBzY2FsZV9maWxsX2Rpc3RpbGxlcih0eXBlID0gImRpdiIsIAogICAgICAgICAgICAgICAgICAgICAgICMgbGltaXRzID0gc2NhbGVfbGltLAogICAgICAgICAgICAgICAgICAgICAgIGxpbWl0cyA9IGMoLTEsIDEpLAogICAgICAgICAgICAgICAgICAgICAgIHBhbGV0dGUgPSAiUFJHbiIpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkpICsKICBsYWJzKHRpdGxlID0gIkxpbmVhciBjb21iaW5hdGlvbiBvZiBhbGwgbW9kZXMiLAogICAgICAgeCA9ICJpdGVtIiwKICAgICAgIHkgPSAicHJvcGVydHkiKQoKZ19kaWZmIDwtIGdncGxvdChkYXRhLmZyYW1lKG1fZGlmZikgJT4lCiAgICAgICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiAgICAgICAgICAgICAgICAgICBnYXRoZXIoaXRlbSwgdmFsdWUsIC1wcm9wZXJ0eSkgJT4lCiAgICAgICAgICAgICAgICAgICBtdXRhdGUoaXRlbSA9IGdzdWIoIlgiLCAiIiwgaXRlbSkpICU+JQogICAgICAgICAgICAgICAgICAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIGl0ZW0pLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5zKC4gJT4lIGZhY3RvciAlPiUgYXMubnVtZXJpYykpICU+JQogICAgICAgICAgICAgICAgICAgbXV0YXRlKGl0ZW0gPSBmYWN0b3IoaXRlbSwgbGFiZWxzID0gaXRlbV9uYW1lcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHByb3BlcnR5X25hbWVzKSksCiAgICAgICAgICAgICAgICAgYWVzKHggPSBpdGVtLCB5ID0gcHJvcGVydHksCiAgICAgICAgICAgICAgICAgICAgICMgeCA9IHJlb3JkZXIoaXRlbSwgdmFsdWUpLCB5ID0gcmVvcmRlcihwcm9wZXJ0eSwgdmFsdWUpLAogICAgICAgICAgICAgICAgICAgICBmaWxsID0gdmFsdWUpKSArIAogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKHZhbHVlLCAyKSwgbnNtYWxsID0gMikpLCBzaXplID0gMykgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHR5cGUgPSAiZGl2IiwgCiAgICAgICAgICAgICAgICAgICAgICAgIyBsaW1pdHMgPSBzY2FsZV9saW0sCiAgICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gYygtMSwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJQUkduIikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkgKwogIGxhYnModGl0bGUgPSAiRGlmZmVyZW5jZTogZGF0YSAtIGxpbmVhciBjb21iaW5hdGlvbiBvZiBtb2RlcyIsCiAgICAgICB4ID0gIml0ZW0iLAogICAgICAgeSA9ICJwcm9wZXJ0eSIpCgpjb3dwbG90OjpwbG90X2dyaWQoZ19hY3R1YWwsIGdfbGluY29tYiwgZ19kaWZmLCBuY29sID0gMSkKYGBgCgpgYGB7cn0KIyBSRUdSRVNTSU9OIC0tLS0tCgojIHR1cm4gZXZlcnl0aGluZyBpbnRvIHZlY3RvcnMKIyBkYXRhCmRfYmFzZV92ZWMgPC0gZF9iYXNlX21lYW4gJT4lIAogIHJvd25hbWVzX3RvX2NvbHVtbigicHJvcGVydHkiKSAlPiUKICBnYXRoZXIoaXRlbSwgbWVhbiwgLXByb3BlcnR5KSAlPiUKICBtdXRhdGUoaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSwKICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHByb3BlcnR5X25hbWVzKSkgJT4lCiAgYXJyYW5nZShpdGVtLCBwcm9wZXJ0eSkgJT4lCiAgc2VsZWN0KG1lYW4pCgojIG1vZGVfMQptb2RlXzFfdmVjIDwtIG91dGVyKHVfb2xkWywxXSwgdl9vbGRbLDFdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJwcm9wZXJ0eSIpICU+JQogIGdhdGhlcihpdGVtLCB2YWx1ZSwgLXByb3BlcnR5KSAlPiUKICBtdXRhdGUoaXRlbSA9IGdzdWIoIlgiLCAiIiwgaXRlbSkpICU+JQogIG11dGF0ZV9hdCh2YXJzKHByb3BlcnR5LCBpdGVtKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiAgbXV0YXRlKGl0ZW0gPSBmYWN0b3IoaXRlbSwgbGFiZWxzID0gaXRlbV9uYW1lcyksCiAgICAgICAgIHByb3BlcnR5ID0gZmFjdG9yKHByb3BlcnR5LCBsYWJlbHMgPSBwcm9wZXJ0eV9uYW1lcykpICU+JQogIGFycmFuZ2UoaXRlbSwgcHJvcGVydHkpICU+JQogIHNlbGVjdCh2YWx1ZSkgJT4lCiAgcmVuYW1lKG1vZGVfMSA9IHZhbHVlKQoKIyBtb2RlXzIKbW9kZV8yX3ZlYyA8LSBvdXRlcih1X29sZFssMl0sIHZfb2xkWywyXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigicHJvcGVydHkiKSAlPiUKICBnYXRoZXIoaXRlbSwgdmFsdWUsIC1wcm9wZXJ0eSkgJT4lCiAgbXV0YXRlKGl0ZW0gPSBnc3ViKCJYIiwgIiIsIGl0ZW0pKSAlPiUKICBtdXRhdGVfYXQodmFycyhwcm9wZXJ0eSwgaXRlbSksIGZ1bnMoYXMubnVtZXJpYykpICU+JQogIG11dGF0ZShpdGVtID0gZmFjdG9yKGl0ZW0sIGxhYmVscyA9IGl0ZW1fbmFtZXMpLAogICAgICAgICBwcm9wZXJ0eSA9IGZhY3Rvcihwcm9wZXJ0eSwgbGFiZWxzID0gcHJvcGVydHlfbmFtZXMpKSAlPiUKICBhcnJhbmdlKGl0ZW0sIHByb3BlcnR5KSAlPiUKICBzZWxlY3QodmFsdWUpICU+JQogIHJlbmFtZShtb2RlXzIgPSB2YWx1ZSkKCiMgbW9kZV8zCm1vZGVfM192ZWMgPC0gb3V0ZXIodV9vbGRbLDNdLCB2X29sZFssM10pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiAgZ2F0aGVyKGl0ZW0sIHZhbHVlLCAtcHJvcGVydHkpICU+JQogIG11dGF0ZShpdGVtID0gZ3N1YigiWCIsICIiLCBpdGVtKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIGl0ZW0pLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKICBtdXRhdGUoaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSwKICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHByb3BlcnR5X25hbWVzKSkgJT4lCiAgYXJyYW5nZShpdGVtLCBwcm9wZXJ0eSkgJT4lCiAgc2VsZWN0KHZhbHVlKSAlPiUKICByZW5hbWUobW9kZV8zID0gdmFsdWUpCgojIG1vZGVfNAptb2RlXzRfdmVjIDwtIG91dGVyKHVfb2xkWyw0XSwgdl9vbGRbLDRdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJwcm9wZXJ0eSIpICU+JQogIGdhdGhlcihpdGVtLCB2YWx1ZSwgLXByb3BlcnR5KSAlPiUKICBtdXRhdGUoaXRlbSA9IGdzdWIoIlgiLCAiIiwgaXRlbSkpICU+JQogIG11dGF0ZV9hdCh2YXJzKHByb3BlcnR5LCBpdGVtKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiAgbXV0YXRlKGl0ZW0gPSBmYWN0b3IoaXRlbSwgbGFiZWxzID0gaXRlbV9uYW1lcyksCiAgICAgICAgIHByb3BlcnR5ID0gZmFjdG9yKHByb3BlcnR5LCBsYWJlbHMgPSBwcm9wZXJ0eV9uYW1lcykpICU+JQogIGFycmFuZ2UoaXRlbSwgcHJvcGVydHkpICU+JQogIHNlbGVjdCh2YWx1ZSkgJT4lCiAgcmVuYW1lKG1vZGVfNCA9IHZhbHVlKQoKIyBtb2RlXzUKbW9kZV81X3ZlYyA8LSBvdXRlcih1X29sZFssNV0sIHZfb2xkWyw1XSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigicHJvcGVydHkiKSAlPiUKICBnYXRoZXIoaXRlbSwgdmFsdWUsIC1wcm9wZXJ0eSkgJT4lCiAgbXV0YXRlKGl0ZW0gPSBnc3ViKCJYIiwgIiIsIGl0ZW0pKSAlPiUKICBtdXRhdGVfYXQodmFycyhwcm9wZXJ0eSwgaXRlbSksIGZ1bnMoYXMubnVtZXJpYykpICU+JQogIG11dGF0ZShpdGVtID0gZmFjdG9yKGl0ZW0sIGxhYmVscyA9IGl0ZW1fbmFtZXMpLAogICAgICAgICBwcm9wZXJ0eSA9IGZhY3Rvcihwcm9wZXJ0eSwgbGFiZWxzID0gcHJvcGVydHlfbmFtZXMpKSAlPiUKICBhcnJhbmdlKGl0ZW0sIHByb3BlcnR5KSAlPiUKICBzZWxlY3QodmFsdWUpICU+JQogIHJlbmFtZShtb2RlXzUgPSB2YWx1ZSkKCiMgbW9kZV82Cm1vZGVfNl92ZWMgPC0gb3V0ZXIodV9vbGRbLDZdLCB2X29sZFssNl0pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiAgZ2F0aGVyKGl0ZW0sIHZhbHVlLCAtcHJvcGVydHkpICU+JQogIG11dGF0ZShpdGVtID0gZ3N1YigiWCIsICIiLCBpdGVtKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIGl0ZW0pLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKICBtdXRhdGUoaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSwKICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHByb3BlcnR5X25hbWVzKSkgJT4lCiAgYXJyYW5nZShpdGVtLCBwcm9wZXJ0eSkgJT4lCiAgc2VsZWN0KHZhbHVlKSAlPiUKICByZW5hbWUobW9kZV82ID0gdmFsdWUpCgojIGNvbWJpbmUKZF9yZWcgPC0gY2JpbmQoZF9iYXNlX3ZlYywgCiAgICAgICAgICAgICAgIG1vZGVfMV92ZWMsIG1vZGVfMl92ZWMsIG1vZGVfM192ZWMsIG1vZGVfNF92ZWMsCiAgICAgICAgICAgICAgIG1vZGVfNV92ZWMsIG1vZGVfNl92ZWMpCgojIHJlZ3Jlc3Npb24KcjEgPC0gbG0obWVhbiB+IG1vZGVfMSwgZF9yZWcpOyAjc3VtbWFyeShyMSkKIyByMiA8LSBsbShtZWFuIH4gbW9kZV8yLCBkX3JlZyk7ICNzdW1tYXJ5KHIyKQojIHIzIDwtIGxtKG1lYW4gfiBtb2RlXzMsIGRfcmVnKTsgI3N1bW1hcnkocjMpCiMgcjQgPC0gbG0obWVhbiB+IG1vZGVfNCwgZF9yZWcpOyAjc3VtbWFyeShyNCkKcjEyIDwtIGxtKG1lYW4gfiBtb2RlXzEgKyBtb2RlXzIsIGRfcmVnKTsgI3N1bW1hcnkocjEyKQpyMTIzIDwtIGxtKG1lYW4gfiBtb2RlXzEgKyBtb2RlXzIgKyBtb2RlXzMsIGRfcmVnKTsgI3N1bW1hcnkocjEyMykKcjEyMzQgPC0gbG0obWVhbiB+IG1vZGVfMSArIG1vZGVfMiArIG1vZGVfMyArIG1vZGVfNCwgZF9yZWcpOyAjc3VtbWFyeShyMTIzNCkKcjEyMzQ1IDwtIGxtKG1lYW4gfiBtb2RlXzEgKyBtb2RlXzIgKyBtb2RlXzMgKyBtb2RlXzQgKyBtb2RlXzUsIGRfcmVnKTsgI3N1bW1hcnkocjEyMzQ1KQojIHIxMjM0XzAgPC0gbG0obWVhbiB+IDAgKyBtb2RlXzEgKyBtb2RlXzIgKyBtb2RlXzMgKyBtb2RlXzQsIGRfcmVnKTsgc3VtbWFyeShyMTIzNF8wKQpyMTIzNDU2IDwtIGxtKG1lYW4gfiBtb2RlXzEgKyBtb2RlXzIgKyBtb2RlXzMgKyBtb2RlXzQgKyBtb2RlXzUgKyBtb2RlXzYsIAogICAgICAgICAgICAgIGRfcmVnKTsgc3VtbWFyeShyMTIzNDU2KQpgYGAKCmBgYHtyfQphbm92YShyMSwgcjEyLCByMTIzLCByMTIzNCwgcjEyMzQ1LCByMTIzNDU2KQpgYGAKCmBgYHtyLCByZXN1bHRzID0gImFzLmlzIn0Kc3VtbWFyeShyMTIzNDU2KSRjb2VmZmljaWVudHMgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigicGFyYW1ldGVyIikgJT4lCiAgbXV0YXRlKFNWID0gYyhOQSwgc19vbGRbMTo2XSkpICU+JQogIHJlbmFtZShiZXRhID0gRXN0aW1hdGUsCiAgICAgICAgIGJldGFfc2UgPSBTdGQuLkVycm9yLAogICAgICAgICBiZXRhX3QgPSB0LnZhbHVlLAogICAgICAgICBiZXRhX3AgPSBQci4uLnQuLikgJT4lCiAgbXV0YXRlKHNpZ25pZiA9IGlmZWxzZShiZXRhX3AgPCAwLjAwMSwgIioqKiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoYmV0YV9wIDwgMC4wMSwgIioqIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoYmV0YV9wIDwgMC4wNSwgIioiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibi5zLiIpKSkpICU+JQogIGZpbHRlcihncmVwbCgibW9kZSIsIHBhcmFtZXRlcikpICU+JQogIHNlbGVjdChwYXJhbWV0ZXIsIFNWLCBzdGFydHNfd2l0aCgiYmV0YSIpLCBzaWduaWYpICU+JQogIGtuaXRyOjprYWJsZShkaWdpdHMgPSAzKQpgYGAKCiMgUGxvdHRpbmcgcHJvcGVydGllcyBpbiAyRCBzcGFjZXMKCmBgYHtyLCBmaWcud2lkdGggPSA2LCBmaWcuYXNwID0gMC42fQpkYXRhLmZyYW1lKHVfb2xkKSAlPiUKICBtdXRhdGUoWDEgPSBYMSAqIHNfb2xkWzFdLAogICAgICAgICBYMiA9IFgyICogc19vbGRbMl0sCiAgICAgICAgIFgzID0gWDMgKiBzX29sZFszXSwKICAgICAgICAgWDQgPSBYNCAqIHNfb2xkWzRdLAogICAgICAgICBYNSA9IFg1ICogc19vbGRbNV0sCiAgICAgICAgIFg2ID0gWDYgKiBzX29sZFs2XSkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJwcm9wZXJ0eSIpICU+JQogIGFycmFuZ2UoZGVzYyhhYnMoWDEpKSwgZGVzYyhhYnMoWDIpKSwgCiAgICAgICAgICBkZXNjKGFicyhYMykpLCBkZXNjKGFicyhYNCkpLAogICAgICAgICAgZGVzYyhhYnMoWDUpKSwgZGVzYyhhYnMoWDYpKSkgJT4lCiAgbXV0YXRlKG9yZGVyID0gMTpucm93KC4pKSAlPiUKICBnYXRoZXIobW9kZSwgdmFsdWUsIC1wcm9wZXJ0eSwgLW9yZGVyKSAlPiUKICBtdXRhdGUobW9kZSA9IGdzdWIoIlgiLCAiIiwgbW9kZSkpICU+JQogIG11dGF0ZV9hdCh2YXJzKHByb3BlcnR5LCBtb2RlKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiAgbXV0YXRlKG1vZGUgPSBmYWN0b3IobW9kZSwgbGFiZWxzID0gYygibW9kZV8xIiwgIm1vZGVfMiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfMyIsICJtb2RlXzQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfNSIsICJtb2RlXzYiKSksCiAgICAgICAgIHByb3BlcnR5ID0gZmFjdG9yKHByb3BlcnR5LCBsYWJlbHMgPSBwcm9wZXJ0eV9uYW1lcykpICU+JQogIGZ1bGxfam9pbihlZmFfZmFjdG9ycyAlPiUgc2VsZWN0KHByb3BlcnR5LCBmYWN0b3IpKSAlPiUKICBzcHJlYWQobW9kZSwgdmFsdWUpICU+JQogIGdncGxvdChhZXMoeCA9IG1vZGVfMSwgeSA9IG1vZGVfMiwgY29sb3IgPSBmYWN0b3IsIAogICAgICAgICAgICAgbGFiZWwgPSBwcm9wZXJ0eSkpICsKICBnZW9tX3RleHQoKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiU2V0MSIpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGNvb3JkX2ZpeGVkKCkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSAKICAgICAgICAgICAgICAgICAgICAgICBzZXEoLTEwLCAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSByb3VuZCgoc2NhbGVfbGltWzJdIC0gc2NhbGVfbGltWzFdKS80LCAyKSksCiAgICAgICAgICAgICAgICAgICAgIGV4cGFuZCA9IGMoMC4yNSwgMC4yNSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gCiAgICAgICAgICAgICAgICAgICAgICAgc2VxKC0xMCwgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gcm91bmQoKHNjYWxlX2xpbVsyXSAtIHNjYWxlX2xpbVsxXSkvNCwgMikpKSArICBsYWJzKHRpdGxlID0gInByb3BlcnRpZXMgaW4gMkQgc3BhY2U6IG1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAibW9kZSAxIiwgeSA9ICJtb2RlIDIiKQoKZGF0YS5mcmFtZSh1X29sZCkgJT4lCiAgbXV0YXRlKFgxID0gWDEgKiBzX29sZFsxXSwKICAgICAgICAgWDIgPSBYMiAqIHNfb2xkWzJdLAogICAgICAgICBYMyA9IFgzICogc19vbGRbM10sCiAgICAgICAgIFg0ID0gWDQgKiBzX29sZFs0XSwKICAgICAgICAgWDUgPSBYNSAqIHNfb2xkWzVdLAogICAgICAgICBYNiA9IFg2ICogc19vbGRbNl0pICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigicHJvcGVydHkiKSAlPiUKICBhcnJhbmdlKGRlc2MoYWJzKFgxKSksIGRlc2MoYWJzKFgyKSksIAogICAgICAgICAgZGVzYyhhYnMoWDMpKSwgZGVzYyhhYnMoWDQpKSwKICAgICAgICAgIGRlc2MoYWJzKFg1KSksIGRlc2MoYWJzKFg2KSkpICU+JQogIG11dGF0ZShvcmRlciA9IDE6bnJvdyguKSkgJT4lCiAgZ2F0aGVyKG1vZGUsIHZhbHVlLCAtcHJvcGVydHksIC1vcmRlcikgJT4lCiAgbXV0YXRlKG1vZGUgPSBnc3ViKCJYIiwgIiIsIG1vZGUpKSAlPiUKICBtdXRhdGVfYXQodmFycyhwcm9wZXJ0eSwgbW9kZSksIGZ1bnMoYXMubnVtZXJpYykpICU+JQogIG11dGF0ZShtb2RlID0gZmFjdG9yKG1vZGUsIGxhYmVscyA9IGMoIm1vZGVfMSIsICJtb2RlXzIiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RlXzMiLCAibW9kZV80IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RlXzUiLCAibW9kZV82IikpLAogICAgICAgICBwcm9wZXJ0eSA9IGZhY3Rvcihwcm9wZXJ0eSwgbGFiZWxzID0gcHJvcGVydHlfbmFtZXMpKSAlPiUKICBmdWxsX2pvaW4oZWZhX2ZhY3RvcnMgJT4lIHNlbGVjdChwcm9wZXJ0eSwgZmFjdG9yKSkgJT4lCiAgc3ByZWFkKG1vZGUsIHZhbHVlKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBtb2RlXzEsIHkgPSBtb2RlXzMsIGNvbG9yID0gZmFjdG9yLCBsYWJlbCA9IHByb3BlcnR5KSkgKwogIGdlb21fdGV4dCgpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJTZXQxIikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgY29vcmRfZml4ZWQoKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IAogICAgICAgICAgICAgICAgICAgICAgIHNlcSgtMTAsIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9IHJvdW5kKChzY2FsZV9saW1bMl0gLSBzY2FsZV9saW1bMV0pLzQsIDIpKSwKICAgICAgICAgICAgICAgICAgICAgZXhwYW5kID0gYygwLjI1LCAwLjI1KSkgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSAKICAgICAgICAgICAgICAgICAgICAgICBzZXEoLTEwLCAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSByb3VuZCgoc2NhbGVfbGltWzJdIC0gc2NhbGVfbGltWzFdKS80LCAyKSkpICsgIGxhYnModGl0bGUgPSAicHJvcGVydGllcyBpbiAyRCBzcGFjZTogbW9kZXMgMSAmIDMiLAogICAgICAgeCA9ICJtb2RlIDEiLCB5ID0gIm1vZGUgMyIpCgpkYXRhLmZyYW1lKHVfb2xkKSAlPiUKICBtdXRhdGUoWDEgPSBYMSAqIHNfb2xkWzFdLAogICAgICAgICBYMiA9IFgyICogc19vbGRbMl0sCiAgICAgICAgIFgzID0gWDMgKiBzX29sZFszXSwKICAgICAgICAgWDQgPSBYNCAqIHNfb2xkWzRdLAogICAgICAgICBYNSA9IFg1ICogc19vbGRbNV0sCiAgICAgICAgIFg2ID0gWDYgKiBzX29sZFs2XSkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJwcm9wZXJ0eSIpICU+JQogIGFycmFuZ2UoZGVzYyhhYnMoWDEpKSwgZGVzYyhhYnMoWDIpKSwgCiAgICAgICAgICBkZXNjKGFicyhYMykpLCBkZXNjKGFicyhYNCkpLAogICAgICAgICAgZGVzYyhhYnMoWDUpKSwgZGVzYyhhYnMoWDYpKSkgJT4lCiAgbXV0YXRlKG9yZGVyID0gMTpucm93KC4pKSAlPiUKICBnYXRoZXIobW9kZSwgdmFsdWUsIC1wcm9wZXJ0eSwgLW9yZGVyKSAlPiUKICBtdXRhdGUobW9kZSA9IGdzdWIoIlgiLCAiIiwgbW9kZSkpICU+JQogIG11dGF0ZV9hdCh2YXJzKHByb3BlcnR5LCBtb2RlKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiAgbXV0YXRlKG1vZGUgPSBmYWN0b3IobW9kZSwgbGFiZWxzID0gYygibW9kZV8xIiwgIm1vZGVfMiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfMyIsICJtb2RlXzQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfNSIsICJtb2RlXzYiKSksCiAgICAgICAgIHByb3BlcnR5ID0gZmFjdG9yKHByb3BlcnR5LCBsYWJlbHMgPSBwcm9wZXJ0eV9uYW1lcykpICU+JQogIGZ1bGxfam9pbihlZmFfZmFjdG9ycyAlPiUgc2VsZWN0KHByb3BlcnR5LCBmYWN0b3IpKSAlPiUKICBzcHJlYWQobW9kZSwgdmFsdWUpICU+JQogIGdncGxvdChhZXMoeCA9IG1vZGVfMiwgeSA9IG1vZGVfMywgY29sb3IgPSBmYWN0b3IsIGxhYmVsID0gcHJvcGVydHkpKSArCiAgZ2VvbV90ZXh0KCkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIlNldDEiKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBjb29yZF9maXhlZCgpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gCiAgICAgICAgICAgICAgICAgICAgICAgc2VxKC0xMCwgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gcm91bmQoKHNjYWxlX2xpbVsyXSAtIHNjYWxlX2xpbVsxXSkvNCwgMikpLAogICAgICAgICAgICAgICAgICAgICBleHBhbmQgPSBjKDAuMjUsIDAuMjUpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IAogICAgICAgICAgICAgICAgICAgICAgIHNlcSgtMTAsIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9IHJvdW5kKChzY2FsZV9saW1bMl0gLSBzY2FsZV9saW1bMV0pLzQsIDIpKSkgKwogIGxhYnModGl0bGUgPSAicHJvcGVydGllcyBpbiAyRCBzcGFjZTogbW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJtb2RlIDIiLCB5ID0gIm1vZGUgMyIpCmBgYAoKCgojIFBsb3R0aW5nIGl0ZW1zIGluIDJEIHNwYWNlcwoKYGBge3IsIGZpZy53aWR0aCA9IDYsIGZpZy5hc3AgPSAwLjZ9CmRhdGEuZnJhbWUodl9vbGQpICU+JQogIG11dGF0ZShYMSA9IFgxICogc19vbGRbMV0sCiAgICAgICAgIFgyID0gWDIgKiBzX29sZFsyXSwKICAgICAgICAgWDMgPSBYMyAqIHNfb2xkWzNdLAogICAgICAgICBYNCA9IFg0ICogc19vbGRbNF0sCiAgICAgICAgIFg1ID0gWDUgKiBzX29sZFs1XSwKICAgICAgICAgWDYgPSBYNiAqIHNfb2xkWzZdKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oIml0ZW0iKSAlPiUKICBhcnJhbmdlKGRlc2MoYWJzKFgxKSksIGRlc2MoYWJzKFgyKSksIAogICAgICAgICAgZGVzYyhhYnMoWDMpKSwgZGVzYyhhYnMoWDQpKSwKICAgICAgICAgIGRlc2MoYWJzKFg1KSksIGRlc2MoYWJzKFg2KSkpICU+JQogIG11dGF0ZShvcmRlciA9IDE6bnJvdyguKSkgJT4lCiAgZ2F0aGVyKG1vZGUsIHZhbHVlLCAtaXRlbSwgLW9yZGVyKSAlPiUKICBtdXRhdGUobW9kZSA9IGdzdWIoIlgiLCAiIiwgbW9kZSkpICU+JQogIG11dGF0ZV9hdCh2YXJzKGl0ZW0sIG1vZGUpLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKICBtdXRhdGUobW9kZSA9IGZhY3Rvcihtb2RlLCBsYWJlbHMgPSBjKCJtb2RlXzEiLCAibW9kZV8yIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV8zIiwgIm1vZGVfNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV81IiwgIm1vZGVfNiIpKSwKICAgICAgICAgaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSkgJT4lCiAgc3ByZWFkKG1vZGUsIHZhbHVlKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBtb2RlXzEsIHkgPSBtb2RlXzIsIGxhYmVsID0gaXRlbSkpICsKICBnZW9tX3RleHQoKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBjb29yZF9maXhlZCgpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gCiAgICAgICAgICAgICAgICAgICAgICAgc2VxKC0xMCwgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gcm91bmQoKHNjYWxlX2xpbVsyXSAtIHNjYWxlX2xpbVsxXSkvNCwgMikpLAogICAgICAgICAgICAgICAgICAgICBleHBhbmQgPSBjKDAuMjUsIDAuMjUpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IAogICAgICAgICAgICAgICAgICAgICAgIHNlcSgtMTAsIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9IHJvdW5kKChzY2FsZV9saW1bMl0gLSBzY2FsZV9saW1bMV0pLzQsIDIpKSkgKyAgbGFicyh0aXRsZSA9ICJpdGVtcyBpbiAyRCBzcGFjZTogbW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJtb2RlIDEiLCB5ID0gIm1vZGUgMiIpCgpkYXRhLmZyYW1lKHZfb2xkKSAlPiUKICBtdXRhdGUoWDEgPSBYMSAqIHNfb2xkWzFdLAogICAgICAgICBYMiA9IFgyICogc19vbGRbMl0sCiAgICAgICAgIFgzID0gWDMgKiBzX29sZFszXSwKICAgICAgICAgWDQgPSBYNCAqIHNfb2xkWzRdLAogICAgICAgICBYNSA9IFg1ICogc19vbGRbNV0sCiAgICAgICAgIFg2ID0gWDYgKiBzX29sZFs2XSkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJpdGVtIikgJT4lCiAgYXJyYW5nZShkZXNjKGFicyhYMSkpLCBkZXNjKGFicyhYMikpLCAKICAgICAgICAgIGRlc2MoYWJzKFgzKSksIGRlc2MoYWJzKFg0KSksCiAgICAgICAgICBkZXNjKGFicyhYNSkpLCBkZXNjKGFicyhYNikpKSAlPiUKICBtdXRhdGUob3JkZXIgPSAxOm5yb3coLikpICU+JQogIGdhdGhlcihtb2RlLCB2YWx1ZSwgLWl0ZW0sIC1vcmRlcikgJT4lCiAgbXV0YXRlKG1vZGUgPSBnc3ViKCJYIiwgIiIsIG1vZGUpKSAlPiUKICBtdXRhdGVfYXQodmFycyhpdGVtLCBtb2RlKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiAgbXV0YXRlKG1vZGUgPSBmYWN0b3IobW9kZSwgbGFiZWxzID0gYygibW9kZV8xIiwgIm1vZGVfMiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfMyIsICJtb2RlXzQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfNSIsICJtb2RlXzYiKSksCiAgICAgICAgIGl0ZW0gPSBmYWN0b3IoaXRlbSwgbGFiZWxzID0gaXRlbV9uYW1lcykpICU+JQogIHNwcmVhZChtb2RlLCB2YWx1ZSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9kZV8xLCB5ID0gbW9kZV8zLCBsYWJlbCA9IGl0ZW0pKSArCiAgZ2VvbV90ZXh0KCkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgY29vcmRfZml4ZWQoKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IAogICAgICAgICAgICAgICAgICAgICAgIHNlcSgtMTAsIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9IHJvdW5kKChzY2FsZV9saW1bMl0gLSBzY2FsZV9saW1bMV0pLzQsIDIpKSwKICAgICAgICAgICAgICAgICAgICAgZXhwYW5kID0gYygwLjI1LCAwLjI1KSkgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSAKICAgICAgICAgICAgICAgICAgICAgICBzZXEoLTEwLCAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSByb3VuZCgoc2NhbGVfbGltWzJdIC0gc2NhbGVfbGltWzFdKS80LCAyKSkpICsgIGxhYnModGl0bGUgPSAiaXRlbXMgaW4gMkQgc3BhY2U6IG1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAibW9kZSAxIiwgeSA9ICJtb2RlIDMiKQoKZGF0YS5mcmFtZSh2X29sZCkgJT4lCiAgbXV0YXRlKFgxID0gWDEgKiBzX29sZFsxXSwKICAgICAgICAgWDIgPSBYMiAqIHNfb2xkWzJdLAogICAgICAgICBYMyA9IFgzICogc19vbGRbM10sCiAgICAgICAgIFg0ID0gWDQgKiBzX29sZFs0XSwKICAgICAgICAgWDUgPSBYNSAqIHNfb2xkWzVdLAogICAgICAgICBYNiA9IFg2ICogc19vbGRbNl0pICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiaXRlbSIpICU+JQogIGFycmFuZ2UoZGVzYyhhYnMoWDEpKSwgZGVzYyhhYnMoWDIpKSwgCiAgICAgICAgICBkZXNjKGFicyhYMykpLCBkZXNjKGFicyhYNCkpLAogICAgICAgICAgZGVzYyhhYnMoWDUpKSwgZGVzYyhhYnMoWDYpKSkgJT4lCiAgbXV0YXRlKG9yZGVyID0gMTpucm93KC4pKSAlPiUKICBnYXRoZXIobW9kZSwgdmFsdWUsIC1pdGVtLCAtb3JkZXIpICU+JQogIG11dGF0ZShtb2RlID0gZ3N1YigiWCIsICIiLCBtb2RlKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMoaXRlbSwgbW9kZSksIGZ1bnMoYXMubnVtZXJpYykpICU+JQogIG11dGF0ZShtb2RlID0gZmFjdG9yKG1vZGUsIGxhYmVscyA9IGMoIm1vZGVfMSIsICJtb2RlXzIiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RlXzMiLCAibW9kZV80IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RlXzUiLCAibW9kZV82IikpLAogICAgICAgICBpdGVtID0gZmFjdG9yKGl0ZW0sIGxhYmVscyA9IGl0ZW1fbmFtZXMpKSAlPiUKICBzcHJlYWQobW9kZSwgdmFsdWUpICU+JQogIGdncGxvdChhZXMoeCA9IG1vZGVfMiwgeSA9IG1vZGVfMywgbGFiZWwgPSBpdGVtKSkgKwogIGdlb21fdGV4dCgpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGNvb3JkX2ZpeGVkKCkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSAKICAgICAgICAgICAgICAgICAgICAgICBzZXEoLTEwLCAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSByb3VuZCgoc2NhbGVfbGltWzJdIC0gc2NhbGVfbGltWzFdKS80LCAyKSksCiAgICAgICAgICAgICAgICAgICAgIGV4cGFuZCA9IGMoMC4yNSwgMC4yNSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gCiAgICAgICAgICAgICAgICAgICAgICAgc2VxKC0xMCwgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gcm91bmQoKHNjYWxlX2xpbVsyXSAtIHNjYWxlX2xpbVsxXSkvNCwgMikpKSArCiAgbGFicyh0aXRsZSA9ICJpdGVtcyBpbiAyRCBzcGFjZTogbW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJtb2RlIDIiLCB5ID0gIm1vZGUgMyIpCmBgYAoK